2012年01月17日
川俣晶の縁側ソフトウェア技術雑記 total 4197 count

SharpBoxでDropBoxのファイル一覧を得る

Written By: 川俣 晶連絡先

 自分では複数のオンライン・ストレージを使用していましたが、世間で大人気のDropBoxは使っていませんでした。しかし、避けては通れないので軽く使ってみました。とりあえず、ライブラリとしてはSharpBoxを使用して、そのアプリのフォルダのファイル一覧を得るだけ。

前提 §

  • .NET Framework 4.0のConsole Applicationプロジェクト
  • SharpBoxはプロジェクト作成後にNuGetでインストール
  • DropBoxサイトで開発者として登録してあり、アプリケーションも登録済み
  • リダイレクト先のURLはどこでも良いがトークンが付くので他人のサイトは避けた方が良さそう

サンプルソース §

using System;

using System.Collections.Generic;

using System.Diagnostics;

using System.Linq;

using System.Text;

using AppLimit.CloudComputing.SharpBox;

using AppLimit.CloudComputing.SharpBox.StorageProvider.DropBox;

namespace DropBox001

{

    class Program

    {

        private const string authorizationCallbackUri = "http://……/";

        private const string consumerKey = "……";

        private const string consumerSecret = "……";

        static void Main(string[] args)

        {

            CloudStorage dropBoxStorage = new CloudStorage();

            var dropBoxConfig =

                CloudStorage.GetCloudConfigurationEasy(

                    nSupportedCloudConfigurations.DropBox

                );

            DropBoxConfiguration config = dropBoxConfig as DropBoxConfiguration;

            config.AuthorizationCallBack = new Uri(authorizationCallbackUri);

            DropBoxRequestToken requestToken =

                DropBoxStorageProviderTools.GetDropBoxRequestToken(

                    config, consumerKey, consumerSecret

                );

            String AuthorizationUrl =

                DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(

                    config, requestToken

                );

            Process.Start(AuthorizationUrl);

            Console.WriteLine("認証が終わったらEnterを押して下さい:");

            Console.ReadLine();

            ICloudStorageAccessToken accessToken =

                DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(

                    config, consumerKey, consumerSecret, requestToken

                );

            ICloudStorageAccessToken storageToken = dropBoxStorage.Open(

                dropBoxConfig, accessToken

            );

            var ent = dropBoxStorage.GetRoot();

            foreach (var item in ent)

            {

                Console.WriteLine("{0},{1},{2}", item.Name, item.Modified, item.Length);

            }

            dropBoxStorage.Close();

        }

    }

}

感想 §

 たかがこの程度のサンプルソースを書くのに手間掛かり過ぎ。なぜ手間が掛かるのかといえば、ドキュメントの圧倒的不足と矛盾。ドキュメントが無いのも説明不足も当たり前なら、旧版の内容と一部混同して矛盾するし(どこにも定義されていない変数を参照するサンプルまであった!)

 ちなみに、このサンプルソースもたぶん実行しようと思うと思ったとき、ほとんど一瞬で動かせる人と数時間(下手をすると数日)かかる人が出るのでしょう。

 これだけじゃ動かないよ、もっと詳しく説明して欲しいよ、という人はどこかの開発系編集部に「川俣さんの解説記事が読みたい」とリクエストしよう。